home *** CD-ROM | disk | FTP | other *** search
/ Experimental BBS Explossion 3 / Experimental BBS Explossion III.iso / sound / fmsyn104.zip / SYSEX.TXT < prev    next >
Text File  |  1993-09-10  |  8KB  |  220 lines

  1. FM Midi Synth driver Version 1.04
  2. Copyright (c) 1993 by Jamie O'Connell
  3.  
  4.  
  5. System Exclusive Information
  6.  
  7. The FM Synth driver is a bi-directional driver: it provides
  8. a MIDI input port in order to implement System Exclusive
  9. dumps.  The driver can send or receive System Exclusive data
  10. and recive commands.  The general format of a SysEx message
  11. is as follows:
  12.  
  13.      F0          MIDI Sys Ex
  14.      00,00, 5B  Manufacturers' ID: WinJammer Software Ltd.
  15.      7F          Device ID -- Must be present
  16.      01          Model ID -- FM Synth Driver
  17.      xx          Command ID -- See Below
  18.      aa          Address MSB -- Location: System,
  19.                  Working storage, or Bank#
  20.      aa          Address Channel# or Timbre#
  21.      ss          Size MSB of following Data Block or
  22.                  #Bytes to dump
  23.      ss          Size LSB
  24.      data        Data if send request, otherwise blank
  25.      F7          End of Exclusive Command
  26.  
  27. Command ID
  28.  
  29.      Code     Meaning
  30.      (Hex)
  31.      11       Request Data from Driver
  32.      12       Send Data to the Driver, Send Data
  33.               to the Application
  34.      15       Reset Driver to Power-on state
  35.      16       Reset Timbre Banks
  36.      
  37. In order to receive system exclusive dumps from the driver,
  38. the FM Synth SysEx Input driver must be attached to an
  39. application input port.  It is then a simple matter of
  40. sending the desired starting address, and a size describing
  41. the amount of data to dump.  The data received from the
  42. driver contains a command id of 12 hex, so that the data is in
  43. the proper format to be shipped back to the driver at any
  44. time.
  45.  
  46. The Reset Timbre Bank message and the Reset Driver message
  47. contain only a single Command ID code -- no address or size
  48. bytes.
  49.  
  50. Address Bytes
  51.  
  52. The address bytes, together determine where data will be
  53. stored.  See below for specific locations.
  54.  
  55. Size Bytes
  56.  
  57. The total size of the data block is determined by combining
  58. the size bytes (7 bits of each).  Data is stored or dumped
  59. consecutively in Address order -- this means that you can
  60. fill or dump the entire contents of the driver with one data
  61. block.
  62.  
  63. Timbre Banks
  64.  
  65. Individual timbres or entire banks may be uploaded to the
  66. driver.  The new timbre prameters remain until the driver is
  67. reset.  You can send the sysex block as if the Banks and
  68. timbres were stored consecutively.  Individual parameters
  69. can be written to by placing a value in the address offset
  70. (LSB).  The new timbre will not take effect until a program
  71. change is made to access the timbre.
  72.  
  73. Address Map
  74.  
  75. Addr     Addr     Description
  76. MSB      LSB
  77. 00       00       Bank 0, Timbre 0 -- this refers to the
  78.                   first timbre in the first bank -- each
  79.                   timbre is 20 bytes long (see below for
  80.                   format)
  81. 00       01       This refers to the second timbre in the
  82.                   first bank
  83. ...      ...      ... The rest of the bank
  84. 00       7F       The last timbre in the first bank
  85. 01       00       The first timbre in the second bank
  86. ...      ...      ... The remaining timbres
  87. 04       7F       The last timbre in the fifth bank
  88.                   
  89.                   Percussion Parameters
  90. 10       00       First Percussion timbre
  91. 10       2E       Last Percussion timbre (0-46)
  92. 11       00       Percussion Map -- Size: 94 bytes (See
  93.                   Below)
  94.                   
  95.                   System Parameters
  96. 20       00       Location of the System Parameters --
  97.                   Size: 24 Bytes (See Below)
  98.  
  99. Timbre Exclusive Format
  100.  
  101. Offset  Description              Allowed Values
  102.  
  103. 01    Modulator Attack Rate    0 - 15 higher is faster
  104. 02    Modulator Decay Rate     0-15
  105. 03    Modulator Sustain Rate   0-15
  106. 04    Modulator Release Rate   0-15
  107. 05    Modulator                4 lower bits indicating on
  108.       Trem,Vib,EnvScale,KSR    or off:
  109.                                |...|AM|VIB|EGT|KSR|
  110. 06    Modulator Frequency      0-15 (0 = 1/2)
  111.       Multiplier
  112. 07    Modulator KSL            KSL: 0-3
  113. 08    Modulator Output Level   0-63 zero is loudest
  114.       (attenuation)
  115. 09    Modulator Wave Form      Wave: 0-7 (0-3 on OPL2)
  116. 10    Modulator Feedback, Op   |...|F|F|F|C| - FB: 0-7,
  117.       Connection               FM: 0, Add Syn: 1
  118. 11    Carrier Attack Rate      0 - 15 higher is faster
  119. 12    Carrier Decay Rate       0-15
  120. 13    Carrier Sustain Rate     0-15
  121. 14    Carrier Release Rate     0-15
  122. 15    Carrier                  4 lower bits indicating on
  123.       Trem,Vib,EnvScale,KSR    or off:
  124.                                |...|AM|VIB|EGT|KSR|
  125. 16    Carrier Frequency        0-15 (0 = 1/2)
  126.       Multiplier
  127. 17    Carrier KSL              KSL: 0-3
  128. 18    Carrier Output Level     0-63 zero is loudest
  129.       (attenuation)
  130. 19    Carrier Wave Form        Wave: 0-7 (0-3 on OPL2)
  131. 20    Percussion Voice#        Used for Percussion
  132.                                patches: 6=BD, 7=SD,
  133.                                8=TT, 9=CYM, 10=HH
  134. 21    Transposition Offset     |...|S|TTTTTT| S=0 pos,1
  135.                                neg;Trans: 0-63
  136. 22    Reserved                 Set to 0 -- Future Use
  137. 23    Reserved                 Set to 0 -- Future Use
  138. 24    Reserved                 Set to 0 -- Future Use
  139.  
  140. Each timbre is 24 bytes long.  Each bank holds 128 timbres.
  141. There are 3,072 bytes in an entire Bank message (plus
  142. header).  All five banks can be filled by one 15,360 byte
  143. message (plus header).
  144.  
  145. Percussion Timbres
  146.  
  147. General MIDI defines 47 drum notes, and the driver has
  148. storage for 47 drum timbres.  The percussion timbres use the
  149. percussion voice# parameter to decide which of the 5 drum
  150. voices to sound for the drum tone.  In addition a percussion
  151. mapping of Key to Timbre is implemented, and may be dumped
  152. and loaded.  There are 47 slots in the percussion map, which
  153. cover MIDI notes 35 to 81 (in other words, array element 0
  154. corresponds to MIDI note 35).  Each slot is 2 bytes, so the
  155. map is 94 byes long:
  156.  
  157.               Percussion Map Slot
  158.      Offset   Meaning
  159.      01       Timbre number to sound (0-46)
  160.      02       MIDI Note to play for the key
  161.               (60 = Middle C)
  162.  
  163. System Parameters Exclusive Format
  164.  
  165. Certain driver configuration parameters may be sent to or
  166. received from the driver.  Following is the format for the
  167. system parameter dump and load.  The address to use for
  168. system parameters is 20 hex:
  169.  
  170. Offset  Description            Allowed Values
  171.  
  172. 01    Stereo Mode              0 = Mono, 1 = Stereo
  173. 02    Percussion Mode          0 = Off, 1 = On
  174. 03    Percussion Channel       if Percussion mode = 1:
  175.                                channel = 0-15 (i.e. MIDI
  176.                                channel 10 is value 9)
  177. 04    Default Bank             0-4 (Bank1 - Bank5)
  178. 05    Vibrato Depth            0 = light, 1 = deep
  179. 06    Tremolo Depth            0 = light, 1 = deep
  180. 07    Bend Range               0-12 semitones (1 octave)
  181. 08    Save these settings      1 = Save the settings in
  182.                                the INI file
  183. 09    Channel 0 -- MIDI        0 = Off, 1 = On
  184.       Channel Map
  185. :     :                        The channel map specifies
  186. :     :                        which channels to receive
  187.                                on.
  188. 24    Channel 15               0 = Off, 1 = On
  189.  
  190. Examples
  191.  
  192. The following message will send a timbre to the first bank,
  193. timbre slot 12 (Vibraphone).  All numbers are in
  194. hexadecimal:
  195.  
  196.      F0, 00, 00, 5B, 7F, 01, 12 Header & Send Request
  197.      00, 0B, 00, 28            Bank#1,Timbre#12, Size: 40
  198.      0F, 0B, 0C, 01, 06, 03,     Data: Operator
  199.      01, 01, 03, 07              Parameters
  200.      0D, 0A, 0C, 02, 07, 02, 
  201.      01, 03, 02, 00
  202.      1F, 2A, 0B, 00, 06, 03,     Data: 2nd Timbre
  203.      01, 02, 02, 05              Operator Parameters
  204.      03, 0D, 0C, 01, 06, 00, 
  205.      00, 03, 03, 00
  206.      F7                        End of Exclusive
  207.      
  208. This message requests the driver to send timbre#13, 14, and
  209. 15 from the 2nd Bank:
  210.  
  211.      F0, 00, 00, 5B,        Header & Dump
  212.      7F, 01, 11,              Request
  213.      01, 0C, 00, 3C, F7       Bank#2, Timbre#14, Size: 60
  214.  
  215. The next message requests the driver to reset all the patch
  216. banks to the startup state:
  217.  
  218.      F0, 00, 00, 5B,      Header & Reset
  219.      7F, 01, 16, F7       Request
  220.